using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Globalization;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using EYDIngenieria.ERP.Aplicacion.Gestion;
using EYDIngenieria.ERP.Aplicacion.Mantenedores;
using EYDIngenieria.ERP.ObjetosDeNegocio.Dominio;

public partial class Gestion_Default : System.Web.UI.Page
{

    private MantenedorMedioDePago mantenedorMedioDePago = new MantenedorMedioDePago();
    private GestionOrdenDeTrabajo gestionOrdenDeTrabajo = new GestionOrdenDeTrabajo();
    private MantenedorCliente mantenedorCliente = new MantenedorCliente();
    private MantenedorEstadoOrdenDeTrabajo mantenedorEstadoOrdenesDeTrabajo = new MantenedorEstadoOrdenDeTrabajo();
    private EstadoOrdenDeTrabajo ingresado;
    private OrdenDeTrabajo ot = new OrdenDeTrabajo();
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session.Keys.Count == 0)
            Response.Redirect("../Default.aspx");
        if (!IsPostBack)
        {
       
            gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar();
            gdvOrdenesDeTrabajo.DataBind();
            ddlEstado.DataTextField = "Nombre";
            ddlEstado.DataValueField = "Codigo";
            ddlEstado.DataSource = mantenedorEstadoOrdenesDeTrabajo.Listar();
            ddlEstado.DataBind();
            ListItem li = new ListItem("Todos","T");
            ddlEstado.Items.Insert(0,li);

            ddlCliente.DataTextField = "RazonSocial";
            ddlCliente.DataValueField = "Id";
            ddlCliente.DataSource = mantenedorCliente.Listar();
            ddlCliente.DataBind();
            ddlCliente.Items.Insert(0, li);
        }
    }

  
   
    protected void gdvOrdenesDeTrabajo_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridView grilla = ((GridView)sender);
        int id = int.Parse(grilla.SelectedDataKey.Value.ToString());
        OrdenDeTrabajo ot = gestionOrdenDeTrabajo.Obtener(id);
        lblNumero.Text = ot.NumeroOrdenDeTrabajo.ToString();
        lblFechaFacturacion.Text = ot.FechaFacturacion.ToString("dd-MM-yyyy");
        lblFecha.Text = ot.Fecha.ToString("dd-MM-yyyy");
        lblDetalle.Text = ot.Descripcion;
        lblCliente.Text = ot.Cliente.RazonSocial;
        lblMonto.Text = ot.Monto.ToString("$ 0,0",CultureInfo.CreateSpecificCulture("el-GR"));
        //dtlDetalleOrdenDeTrabajo.DataSource = ot.Detalle;
        //dtlDetalleOrdenDeTrabajo.DataBind();

        gdvDetalle.DataSource = ot.Detalle;
        gdvDetalle.DataBind();
        gdvGastos.DataSource = ot.GastosGenerales;
        gdvGastos.DataBind();

        lblCosto.Text =  gestionOrdenDeTrabajo.ObtenerCosto(ot).ToString("$ 0,0",CultureInfo.CreateSpecificCulture("el-GR"));
        Session["ORDENDETRABAJO"] = ot;
    }
    protected void btnAprobar_Click(object sender, EventArgs e)
    {
        if (gdvOrdenesDeTrabajo.SelectedIndex < 0)
            return;
        
       
        int id = int.Parse(gdvOrdenesDeTrabajo.SelectedDataKey.Value.ToString());
        OrdenDeTrabajo ot = gestionOrdenDeTrabajo.Obtener(id);
        ot.Estado = mantenedorEstadoOrdenesDeTrabajo.Buscar("A")[0];
        gestionOrdenDeTrabajo.Modificar(ot);

        ot.Detalle.Clear();
        ingresado = mantenedorEstadoOrdenesDeTrabajo.Buscar("I")[0];
        gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar(ingresado);
        gdvOrdenesDeTrabajo.DataBind();

      

    }
    
    protected void Button1_Click(object sender, EventArgs e)
    {
        bool todosLosEstados = ddlEstado.SelectedValue.ToString().Equals("T");
        bool todosLosClientes = ddlCliente.SelectedValue.ToString().Equals("T");
        EstadoOrdenDeTrabajo estado;
        Cliente cliente;
        if (todosLosClientes.Equals(true) && todosLosEstados.Equals(true))
        {
            gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar();
        }
        else if (todosLosClientes.Equals(true) && todosLosEstados.Equals(false))
        {
            estado = mantenedorEstadoOrdenesDeTrabajo.Buscar(ddlEstado.SelectedValue)[0];
            gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar(estado);
        }
        else if (todosLosClientes.Equals(false) && todosLosEstados.Equals(true))
        {
            cliente = mantenedorCliente.Obtener(int.Parse(ddlCliente.SelectedValue));
            gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar(cliente);
        }
        else
        {
            estado = mantenedorEstadoOrdenesDeTrabajo.Buscar(ddlEstado.SelectedValue)[0];
            cliente = mantenedorCliente.Obtener(int.Parse(ddlCliente.SelectedValue));
            gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar(estado, cliente);
        }
        gdvOrdenesDeTrabajo.DataBind();
    }

}
